feat(dashboard): redesign org home with two-column layout, facepile, and favorites#3014
Open
simplesagar wants to merge 13 commits into
Open
feat(dashboard): redesign org home with two-column layout, facepile, and favorites#3014simplesagar wants to merge 13 commits into
simplesagar wants to merge 13 commits into
Conversation
…and favorites Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Claude Code Review
This repository is configured for manual code reviews. Comment @claude review to trigger a review and subscribe this PR to future pushes, or @claude review once for a one-time review.
Tip: disable this comment in your organization's Code Review settings.
🦋 Changeset detectedLatest commit: bd1c0bc The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Star and kebab buttons no longer hide when the row isn't hovered. Kebab now opens a MoreActions menu with favorite toggle, project settings, audit-log link, and copy-slug. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Avoids moonshine's dynamic Icon-by-string-name path that was hitting Vite pre-bundle 504s on first load of `ellipsis-vertical`. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Row navigates to project home on click via pointer-events overlay pattern - New ViewModeToggle (grid / list) next to search; persisted in localStorage - ProjectCard component for grid view; ProjectGrid 2/3-column responsive layout - Show more / show less moved outside the list container for visual separation Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Search + view toggle + Add New now span the full content width across the top, so left-rail section labels align with the Projects label on the right — matching the Vercel reference layout. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Collaborator
🚀 Preview Environment (PR #3014)Preview URL: https://pr-3014.dev.getgram.ai
Gram Preview Bot |
- Recent activity preview now uses ActionDot + ActionBadge (shared with /audit-logs) so categories are color-coded identically - "Projects" header bumped to h4 to match Recent challenges/activity - Capitalize N in "Add New" Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…projects - New mise task seed-challenges authenticates via dev-IDP and inserts synthetic deny challenges directly into ClickHouse so the org home Recent challenges box has data to render in local dev - Add a "All projects" hairline divider between the favorites section and the rest of the project list when both are populated Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Inserts ~10 fake org members with pravatar photo URLs so the project-card facepile renders with visible stacking on local dev. Idempotent — workos_id and email are derived from a hash of the seed email so reruns upsert in place. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mise discovers tasks under .mise-tasks only when the file is executable. Without this, `mise run seed-challenges` etc. would fail with "no task found". Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The full Table from /access/challenges had 6 columns and was horizontally overflowing the 320px sidebar. Replaced with a stacked compact row (avatar + principal + deny pill, then scope · attempts · time on a second line) — same divided-list pattern as Recent activity. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds 4 allow buckets (toolset:read, project:read, mcp:read, environment:read) alongside the existing deny buckets, each with a populated matched_grants entry so the /access/challenges page shows realistic data when filtered to approvals. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
7 tasks
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Redesigns the org home page (
/<orgSlug>) into a two-column layout inspired by Vercel's org overview, while staying inside our existing dashboard styling (no Tobias in product UI, no decorative mono kickers).Left rail (sticky on
lg+)Main column
org:admin. Team member routes to/team; Role routes to/access/roles; Project opens the existing inline dialog.Xm ago · actorbelow and a hover tooltip showing full UTC + local timestampsjoinedAt) when a project has no audit activitylocalStorageper org ID via the newuseProjectFavoriteshook)⋯actions affordance (currently a visual stub for future per-row actions)Implementation notes
useAuditLogs()call drives the left-rail preview, the per-project "most recent action" lookup, and the per-project facepile. OneuseMemowalks the audit log once, buildinglatestActionByProjectSlugandactiveActorsByProjectSlugin the same pass — zero extra network calls vs. the previous page.useMembers()is used to mapactorId → photo/email/namefor facepile avatars.getActorLabelandrenderVerbare nowexported fromOrgAuditLogs.tsxsoOrgHomereuses the exact same verb formatting (no parallel implementations to drift).localStorage(via the existinguseLocalStorageState) is the right home. Cross-tab sync is handled by the underlying hook'sstorageevent listener.What's not in this PR (deferred on purpose):
⋯button to a realMoreActionsmenu (component already exists atcomponents/ui/more-actions.tsx).Test plan
/<orgSlug>— left rail renders Recent challenges (if RBAC + denies exist) + Recent activity; main column shows project rows in a thin stack/team, Role navigates to/access/rolesorg:adminscope) sees the page without the Add new menu